import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class RedPacketHandler {

    private RedPacket redPacket;

    public RedPacketHandler(RedPacket redPacket) {
        this.redPacket = redPacket;
    }

    // 这个方法做的事情就是把一个大的红包拆分成多个小红包
    public List<Double> handout() {

        // 创建一个集合用来保存拆分出来的小红包
        List<Double> minRedPacketList = new ArrayList<>();

        // 红包数量
        int redCount = redPacket.getRedCount();

        // 红包的总金额
        double redMoney = redPacket.getRedMoney();

        // 创建一个随机数的类
        Random random = new Random();

        // 拆红包的次数是红包数量的-1
        for (int i = 0; i < redPacket.getRedCount() - 1; i++) {
            double ran = random.nextDouble();//获取一个随机数
            double money = ran * (redMoney / redCount) * 2; // 每个小红包的金额
            redMoney = redMoney - money; // 要从总金额中减去本次的金额
            redCount--; // 红包数量也需要减1
            minRedPacketList.add(round(money));   // 把这些小红包收集倒集合中
        }
        minRedPacketList.add(round(redMoney)); // 最后一个红包也需要加进去

        // 返回集合
        return minRedPacketList;
    }

    // 传递一个double值，四舍五入后小数点保留两位
    public double round(double money) {
        return Math.round(money * 100.0) / 100.0;
    }
}
